package com.news.dao;

/**
 * 连库的基类，负责打开连接，关闭连接 基本操作
 * @author ThinkPad
 *
 */

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class BaseDao {
	// 负责注册驱动
	static {
		try {
			System.out.println("正在注册驱动");
			Class.forName(JDBC.DRIVERNAME);
		} catch (ClassNotFoundException e) {
			System.out.println("注册驱动出现异常" + e.getMessage());
		}
		System.out.println("注册驱动成功");
	}

	/**
	 * 打开连接
	 * 
	 * @return
	 */
	public Connection getCon() {
		Connection con = null;
		System.out.println("正在打开连接");
		try {
			con = DriverManager.getConnection(JDBC.URL, JDBC.USERNAME, JDBC.PASSWORD);
		} catch (SQLException e) {
			System.out.println("连接出现异常" + e.getMessage());
		}
		System.out.println("连接已打开");
		return con;
	}

	/**
	 * 关闭连接
	 */
	public void CloseCon(Connection con) {
		System.out.println("正在关闭连接....");
		if (con != null)
			try {
				con.close();
			} catch (SQLException e) {
				System.out.println("连接关闭出现异常");
			}
		System.out.println("连接已关闭");
	}

	public void closeStmt(Statement stmt) {
		System.out.println("正在关闭执行对象....");
		if (stmt != null)
			try {
				stmt.close();
			} catch (SQLException e) {
				System.out.println("关闭执行对象出现异常" + e.getMessage());
			}
		System.out.println("执行对象已经关闭 ");
	}

	public void closeRs(ResultSet rs) {
		System.out.println("正在关闭结果集....");
		if (rs != null)
			try {
				rs.close();
			} catch (SQLException e) {
				System.out.println("关闭结果集出现异常" + e.getMessage());
			}
		System.out.println("结果集已经关闭 ");
	}

	/**
	 * 全部关闭操作
	 * @param con
	 * @param stmt
	 * @param rs
	 */
	public void closeAll(Connection con, Statement stmt, ResultSet rs) {
		closeRs(rs);
		closeStmt(stmt);
		CloseCon(con);
	}
	/**
	 * 所有的增加删除修改操作都是sql不同，其它内容相同
	 * @return
	 */
	public int update(String sql) {
		System.out.println("准备执行："+sql);
		int line=0;
		
		Connection con=getCon();
		Statement stmt=null;
		try {
			System.out.println("正在执行："+sql);
			stmt=con.createStatement();
			line=stmt.executeUpdate(sql);
			if(line>0) {
				System.out.println("----===执行成功===----");
				return line;
			}
		} catch (SQLException e) {
			System.out.println("操作失败sql:"+sql+"  error:"+e.getMessage());
		}finally {
			closeAll(con,stmt,null);
		}		
		
		return line;
	}
}
